<?
require_once 'lib/BaseAction.php';

class ErrorController extends Tamtay_Base_Action
{
	
    /**
     * errorAction() is the action that will be called by the "ErrorHandler" 
     * plugin.  When an error/exception has been encountered
     * in a ZF MVC application (assuming the ErrorHandler has not been disabled
     * in your bootstrap) - the Errorhandler will set the next dispatchable 
     * action to come here.  This is the "default" module, "error" controller, 
     * specifically, the "error" action.  These options are configurable. 
     * 
     * @see http://framework.zend.com/manual/en/zend.controller.plugins.html
     *
     * @return void
     */
    public function errorAction() 
    { 
        // Ensure the default view suffix is used so we always return good 
        // content
        $this->_helper->viewRenderer->setViewSuffix('phtml');
        $this->_helper->layout->setLayout('default');

        // Grab the error object from the request
        $errors = $this->_getParam('error_handler'); 

        // $errors will be an object set as a parameter of the request object, 
        // type is a property
        switch ($errors->type) { 
            case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_CONTROLLER: 
            case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_ACTION: 

                // 404 error -- controller or action not found 
                $this->getResponse()->setHttpResponseCode(404); 
                $this->view->title = 'Địa chỉ không tồn tại';
                $this->view->message = 'Bạn đã truy cập đến một địa chỉ không tồn tại. Hãy kiểm tra lại địa chỉ bạn muốn đến!'; 
                break; 
            default: 
                // application error 
                $this->getResponse()->setHttpResponseCode(500); 
                $this->view->title = 'Lỗi hệ thống';
                $this->view->message = 'Hệ thống đang có lỗi. Bạn hãy quay lại sau!'; 
                break; 
        } 

		$u=$this->getUser();
		//$this->watchdog($u->uid, "Error", $errors->exception->getMessage(), print_r($this->_getAllParams(), true) . $errors->exception->getTraceAsString());		
        // pass the environment to the view script so we can conditionally 
        // display more/less information
        $this->view->env       = $this->getInvokeArg('env'); 
        
        // pass the actual exception object to the view
        $this->view->exception = $errors->exception; 
        
        // pass the request to the view
        $this->view->request   = $errors->request; 
        $this->view->uid=$u->uid; 
    } 
}


